Summary
Dart-এর ফাংশন এবং এরর হ্যান্ডলিং
Dart-এর ফাংশন এবং এরর হ্যান্ডলিং কোডকে আরও সংগঠিত ও কার্যকর করে। নিচে মূল পয়েন্টগুলি তুলে ধরা হলো:
- ফাংশন: Dart-এ ফাংশন হলো একটি কোডের ব্লক যা নির্দিষ্ট কাজ সম্পাদন করে।
- ফাংশন ডিক্লেয়ার: সাধারণ ফর্ম্যাট হল:
return_type function_name(parameters) { // function body }উদাহরণ:
int add(int a, int b) { return a + b; } - Arrow Function: সংক্ষিপ্ত ফাংশন লেখার জন্য
=>অপারেটর ব্যবহার করা হয়। - Optional ও Named Parameters: ফাংশনের প্যারামিটারগুলি ঐচ্ছিক বা নামকৃত করা যায়।
- Anonymous Functions: ফাংশনগুলো ভেরিয়েবলে সংরক্ষণ করা যায়।
এরর হ্যান্ডলিং:
- Dart-এ এরর হ্যান্ডলিংয়ের জন্য
try, catch, on, এবংfinallyব্লক ব্যবহার হয়। - try-catch: এরর ধরা পড়লে catch ব্লকে সমাধান দেওয়া হয়।
- on-catch: নির্দিষ্ট এরর টাইপের জন্য আলাদা হ্যান্ডলিং।
- finally: সবসময় চলবে, থাকা কিংবা না থাকা নির্বিশেষে।
- Custom Exceptions: Exception ক্লাস থেকে ইনহেরিট করে কাস্টম এক্সেপশন তৈরি করা যায়।
- Rethrow: এরর ধরা এবং পুনরায় ছুঁড়ে ফেলা।
Dart-এর এরর হ্যান্ডলিং কোড ক্র্যাশের বিরুদ্ধে প্রোটেকশন দেয় এবং কাস্টম এক্সেপশন ব্যবহারের মাধ্যমে ত্রুটির সুনির্দিষ্ট হ্যান্ডলিং সম্ভব করে।
Dart-এর ফাংশন এবং এরর হ্যান্ডলিং ব্যবহার করে কোড আরও সংগঠিত, কার্যকর এবং ত্রুটিমুক্ত করা যায়।
Dart-এ ফাংশন এবং এরর হ্যান্ডলিং নিয়ে বিস্তারিতভাবে আলোচনা নিচে দেওয়া হলো:
Functions (ফাংশন)
Dart প্রোগ্রামিং ভাষায় ফাংশন হলো কোডের একটি ব্লক, যা একটি নির্দিষ্ট কাজ সম্পাদন করতে ব্যবহৃত হয়। Dart-এ ফাংশনগুলো ক্লাসের বাইরে বা ভিতরে ডিফাইন করা যেতে পারে। নিচে Dart-এর ফাংশন সম্পর্কিত ধারণা এবং উদাহরণগুলো দেওয়া হলো:
ফাংশন ডিক্লেয়ার করা
Dart এ ফাংশন ডিক্লেয়ার করা হয় return_type এবং function_name ব্যবহার করে:
return_type function_name(parameters) {
// function body
}
উদাহরণ ১: একটি সাধারণ ফাংশন
int add(int a, int b) {
return a + b;
}
void main() {
int sum = add(10, 5);
print(sum); // Output: 15
}
উদাহরণ ২: void ফাংশন
void greet(String name) {
print('Hello, $name!');
}
void main() {
greet('Alice'); // Output: Hello, Alice!
}
Arrow Function (ল্যাম্বডা বা অ্যারো ফাংশন)
Dart এ => অপারেটর ব্যবহার করে একটি সংক্ষিপ্ত ফাংশন লেখা যায়:
int multiply(int a, int b) => a * b;
void main() {
print(multiply(4, 5)); // Output: 20
}
Optional এবং Named Parameters
Optional Parameters: ফাংশনের প্যারামিটারগুলো ব্র্যাকেট [] এর ভিতরে রাখলে তা ঐচ্ছিক হিসেবে বিবেচিত হয়:
void printDetails(String name, [int? age]) {
if (age != null) {
print('$name is $age years old.');
} else {
print('$name\'s age is unknown.');
}
}
void main() {
printDetails('Alice'); // Output: Alice's age is unknown.
printDetails('Bob', 30); // Output: Bob is 30 years old.
}
Named Parameters: Dart-এ required কীওয়ার্ড ব্যবহার করে ফাংশনের প্যারামিটারগুলোকে নির্দিষ্ট করা যায় এবং ডিফল্ট ভ্যালু সেট করা যায়:
void describe({required String name, int age = 18}) {
print('$name is $age years old.');
}
void main() {
describe(name: 'Charlie'); // Output: Charlie is 18 years old.
describe(name: 'David', age: 25); // Output: David is 25 years old.
}
Anonymous Functions (গোপন বা অজানা ফাংশন)
Dart এ ফাংশনগুলোকে ভেরিয়েবলে সংরক্ষণ করা যায় এবং প্যারামিটার ছাড়া সেগুলোকে ডিফাইন করা যায়:
void main() {
var printMessage = (String message) {
print(message);
};
printMessage('Hello, Dart!'); // Output: Hello, Dart!
}
Error Handling (এরর হ্যান্ডলিং)
Dart-এ এরর হ্যান্ডলিংয়ের জন্য try, catch, on, এবং finally ব্লক ব্যবহার করা হয়। এগুলো ব্যবহার করে প্রোগ্রামে কোনো ত্রুটি বা এরর ধরা পড়লে তা পরিচালনা করা যায়।
try-catch ব্লক
try ব্লকের ভেতরে থাকা কোডে কোনো এরর থাকলে catch ব্লকে ধরা পড়বে এবং সেখানে তার সমাধান বা নোটিফিকেশন প্রদর্শন করা যাবে।
void main() {
try {
int result = 10 ~/ 0; // Division by zero error
print(result);
} catch (e) {
print('Error: $e'); // Output: Error: IntegerDivisionByZeroException
}
}
on-catch ব্লক
on কীওয়ার্ড ব্যবহার করে নির্দিষ্ট এরর টাইপের জন্য আলাদা হ্যান্ডলিং করা যায়:
void main() {
try {
int result = 10 ~/ 0;
print(result);
} on IntegerDivisionByZeroException {
print('Cannot divide by zero!');
} catch (e) {
print('Error: $e');
}
}
finally ব্লক
finally ব্লক সবসময় চলবে, চাইলেও সেটা হোক try সফল হলেও বা catch ব্লকে এরর ধরা পড়লেও:
void main() {
try {
int result = 10 ~/ 0;
print(result);
} catch (e) {
print('Error: $e');
} finally {
print('This block always executes.');
}
}
Custom Exceptions (কাস্টম এক্সেপশন)
Dart এ কাস্টম এক্সেপশন তৈরি করা যায়। এজন্য একটি ক্লাস তৈরি করতে হবে যা Exception ক্লাস থেকে ইনহেরিট করবে:
class AgeException implements Exception {
String errorMessage() => 'Age cannot be negative!';
}
void checkAge(int age) {
if (age < 0) {
throw AgeException();
} else {
print('Valid age: $age');
}
}
void main() {
try {
checkAge(-5);
} catch (e) {
print(e.errorMessage()); // Output: Age cannot be negative!
}
}
এরর রিইথ্রো করা
কখনো কখনো আমরা একটি এরর ধরতে চাই এবং তারপর সেটি পুনরায় ছুঁড়তে চাই, এর জন্য rethrow ব্যবহার করা হয়:
void divideNumbers(int a, int b) {
try {
print(a ~/ b);
} catch (e) {
print('Error: $e');
rethrow; // Re-throwing the exception
}
}
void main() {
try {
divideNumbers(10, 0);
} catch (e) {
print('Handled again in main: $e');
}
}
Dart এরর হ্যান্ডলিংয়ের গুরুত্বপূর্ণ দিক
- Dart এ
try-catchব্যবহার করে এরর হ্যান্ডেল করলে কোড ক্র্যাশ থেকে রক্ষা করা যায়। finallyব্লক ব্যবহার করে আপনি শেষমেশ ক্লিনআপ বা রিসোর্স মুক্ত করার কাজ করতে পারেন।- কাস্টম এক্সেপশন ব্যবহার করে আপনি আপনার কোডে আরও স্পেসিফিক এরর হ্যান্ডলিং যোগ করতে পারেন, যা বাগ খুঁজে পেতে সহায়ক।
Read more